﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.PRESENTACION.Maestro
{
    public partial class IUCategoria : Form
    {
        List<CONEXION.CATEGORIA> categorias;
        CtrlCategoria controlador;        

        public IUCategoria()
        {
            InitializeComponent();
            categorias = new List<CONEXION.CATEGORIA>();
            controlador = new CtrlCategoria();
        }

        private void IUCategoria_Load(object sender, EventArgs e)
        {
            categorias = controlador.getListCategoria();
            gridCategoria.DataSource = null;
            gridCategoria.DataSource = categorias;
            setRowsReadOnly(); 
        }

        private void setRowsReadOnly()
        {
            foreach (DataGridViewRow dr in gridCategoria.Rows)
            {
                dr.ReadOnly = true;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtNombreCategoria.Text))
            {
                //procedemos a registrar
                CONEXION.CATEGORIA cat = new CONEXION.CATEGORIA()
                {
                    nombreCategoria = txtNombreCategoria.Text,
                    eliminado = 0
                };

                DialogResult dr = controlador.registrarCategoria(cat);
                if (dr == DialogResult.OK)
                {
                    //actualizamos la lista      
                    categorias = controlador.getListCategoria();
                    gridCategoria.DataSource = null;
                    gridCategoria.DataSource = categorias;

                    setRowsReadOnly();
                }

                txtNombreCategoria.ResetText();
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridCategoria.SelectedRows.Count > 0)
            {
                btnAgregar.Enabled = false;
                txtNombreCategoria.Enabled = false;
                btnEliminar.Enabled = false;

                switch (btnModificar.Text)
                {
                    case "Modificar":
                        int index = gridCategoria.SelectedRows[0].Index;

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Completar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.accept;

                        //mostramos el boton cancelar
                        btnCancelar.Visible = true;

                        //volvemos la celda editable
                        gridCategoria.SelectedRows[0].ReadOnly = false;
                        gridCategoria.SelectedRows[0].Cells[1].Selected = true;
                        gridCategoria.CurrentCell = gridCategoria.SelectedRows[0].Cells[1];
                        gridCategoria.BeginEdit(true);
                        break;
                    case "Completar":
                        int ind = gridCategoria.CurrentRow.Index;
                        if (gridCategoria.Rows[ind].Cells[1].Value != null)
                        {
                            if (MessageBox.Show("¿Confirma actualizar la operación?", "COTIZAV", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
                            {
                                CONEXION.CATEGORIA cat = new CONEXION.CATEGORIA()
                                {
                                    idCategoria = gridCategoria.Rows[ind].Cells[0].Value.ToString(),
                                    nombreCategoria = gridCategoria.Rows[ind].Cells[1].Value.ToString(),
                                    eliminado = 0
                                };

                                DialogResult dr = controlador.actualizarCategoria(cat);
                            }
                        }
                        else
                        {
                            MessageBox.Show("La celda se encuentra vacía", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        //actualizamos la lista      
                        categorias = controlador.getListCategoria();
                        gridCategoria.DataSource = null;
                        gridCategoria.DataSource = categorias;

                        setRowsReadOnly();

                        //cambiamos el boton de modificar
                        btnModificar.Text = "Modificar";
                        btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

                        //ocultamos  el boton cancelar
                        btnCancelar.Visible = false;

                        //habilitamos el panel superior
                        btnAgregar.Enabled = true;
                        txtNombreCategoria.Enabled = true;
                        btnEliminar.Enabled = true;

                        break;
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            //actualizamos la lista      
            categorias = controlador.getListCategoria();
            gridCategoria.DataSource = null;
            gridCategoria.DataSource = categorias;

            setRowsReadOnly();

            //cambiamos el boton de modificar
            btnModificar.Text = "Modificar";
            btnModificar.Image = global::Cotizav.Properties.Resources.contactoedit;

            //ocultamos  el boton cancelar
            btnCancelar.Visible = false;

            //habilitamos el panel superior
            btnAgregar.Enabled = true;
            txtNombreCategoria.Enabled = true;
            btnEliminar.Enabled = true;
        }
        
        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridCategoria.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("¿Confirma eliminar la categoría?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    int index = gridCategoria.SelectedRows[0].Index;
                    CONEXION.CATEGORIA cat = categorias.ElementAt(index);
                    cat.eliminado = 1;

                    controlador.eliminarCategoria(cat);
                }
            }

            //actualizamos la lista      
            categorias = controlador.getListCategoria();
            gridCategoria.DataSource = null;
            gridCategoria.DataSource = categorias;

            setRowsReadOnly();
        }

        private void gridCategoria_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridCategoria.DataSource != null)
            {
                gridCategoria.Columns["idCategoria"].Visible = false;
                gridCategoria.Columns["nombreCategoria"].HeaderText = "Categoria";
                gridCategoria.Columns["nombreCategoria"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridCategoria.Columns["eliminado"].Visible = false;
            }
        }         
    }
}
